---
id: 64dc985e6720a23edac63b51
title: Крок 17
challengeType: 20
dashedName: step-17
---

# --description--

Дозволені рухи диска між стрижнями демонструють повторювану схему, що відбувається кожні три ходи. Наприклад, переміщення між стрижнем `A` та стрижнем `C` дозволено на першому, четвертому та сьомому ході, де остача від ділення між числом ходу та 3 дорівнює 1.

Замініть наявний виклик `print()` в попередньо створеному циклі `for` на інструкцію `if`, яка запускається, коли `(i + 1) % 3 == 1`. В межах цієї інструкції `if` надрукуйте `f'Move {i + 1} allowed between {source} and {target}'`, використовуючи f-рядок. Зверніть увагу, що `i + 1` є числом ходу, оскільки `i` дорівнює нулю під час першої ітерації.

# --hints--

Ви повинні мати інструкцію `if`, яка виконується, якщо `(i + 1) % 3 == 1`.

```js
({test: () => assert.match(code, /if\s+\(\s*i\s*\+\s*1\s*\)\s*%\s*3\s*==\s*1\s*:/)})
```

Надрукуйте рядок `f'Move {i + 1} allowed between {source} and {target}'` за допомогою f-рядка.

```js
({test: () => assert.match(code, /print\s*\(\s*f('|")Move\s\{\s*i\s*\+\s*1\s*\}\sallowed\sbetween\s\{\s*source\s*\}\sand\s\{\s*target\s*\s*\}\1\s*\)/)})
```

# --seed--

## --seed-contents--

```py
NUMBER_OF_DISKS = 3
number_of_moves = 2**NUMBER_OF_DISKS - 1
rods = {
    'A': list(range(NUMBER_OF_DISKS, 0, -1)),
    'B': [],
    'C': []
}

--fcc-editable-region--
def move(n, source, auxiliary, target):
    # display starting configuration
    print(rods)
    for i in range(number_of_moves):
        print(i)
--fcc-editable-region--

# initiate call from source A to target C with auxiliary B
move(NUMBER_OF_DISKS, 'A', 'B', 'C')
```
